/*
 * SPDX-FileCopyrightText: 2024 Andrew Gunnerson
 * SPDX-License-Identifier: GPL-3.0-only
 */

package com.sanji.audio_test.extension

import android.database.Cursor

/**
 * 将 Cursor 转换为 Sequence 的扩展函数
 * 
 * 此函数允许将数据库查询结果（Cursor）作为 Kotlin Sequence 使用，
 * 便于进行函数式编程操作（如 map、filter 等）
 * 
 * 工作原理：
 * 1. 使用 generateSequence 创建一个序列
 * 2. seed 参数：初始值为 Cursor 本身，但只有在成功移动到第一行时才非空
 * 3. nextFunction 参数：每次生成下一个元素时，尝试移动到下一行
 * 4. 当 moveToNext() 返回 false 时，序列结束
 * 
 * 注意：使用此函数前需要确保 Cursor 已经执行了查询并且未关闭
 */
fun Cursor.asSequence() = generateSequence(seed = takeIf { it.moveToFirst() }) {
    takeIf { it.moveToNext() }
}